import java.util.PriorityQueue;

/**
 * Created with IntelliJ IDEA.
 * Description:利用优先级队列(堆)获取前k个最小的元素
 * User: liangyuanzhang
 * Date: 2025--17
 * Time: 8:02
 */
public class Test {

    public int[] smallestK(int[] arr,int k){
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
        for (int i = 0; i < arr.length; i++) {
            priorityQueue.offer(arr[i]);// 放进优先级队列--里面默认是小根堆(堆顶元素是最小的)
        }

        int[] ret = new int[k];
        for (int i = 0; i < k; i++) {
            ret[i] = priorityQueue.poll();// 要前k个最小的元素，把优先级队列元素出堆放进ret数组
        }
        return ret;// 并且返回这个数组就得到了前k个最小的元素
    }


    public static void main(String[] args) {
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
        priorityQueue.offer(12);
        priorityQueue.offer(11);
        System.out.println(priorityQueue.peek());
    }
}
